package Lambda表达式.Animal;
//定义测试类
public class TestAnimal {
    public static void main(String[] args) {
       /*方案1：创建接口实现类对象调用*/
        Animal a = new AnimalImpl(); //多态形式
        getAnimal(a);//实现一个方法调用

        System.out.println("--------------------------------");
        /*方案2：使用匿名内部类的方式来调用*/
         getAnimal(new Animal(){ //直接调用公共静态方法，接口的业务对象和重写其抽象方法
             @Override
             public void eat() {
                 System.out.println("小动物爱吃匿名内部类");
             }
         });//不是线程，只是一个静态方法，不需要调用.start()启动线程

        System.out.println("--------------------------------");

        /*方案3:使用Lambda表达式来完成
         * eat()没有参数，小括号为空，指向eat()里实际要执行的一句打印语句 */
        getAnimal( () -> {
            System.out.println("Lambda表达式的方式，小动物们都惊呆了~");
        });


    }
 //定义一个静态方法
    private static void getAnimal(Animal a) {
        a.eat();//参数调用抽象方法
    }
}
